SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TDPRRE_GAST_Q01]
/*---------------------------------------------------------*/
/*---Empresa              : OFISIS S.A.                  --*/
/*---Cliente              : OFISIS S.A.                  --*/
/*---Sistema              : Tesoreria                    --*/
/*---M«dulo               : Empresa                      --*/
/*---Programa             : Valida Pre Rendicion		 --*/
/*---Desarrollado por     : Carlos Marquez Escobar       --*/
/*---Fecha Creaci«n       : 25/05/2005                   --*/
/*---Base Datos           : Microsoft Sql Server         --*/
/*---Versi«n              : 8.0                          --*/
/*---Invoca a SP          :                              --*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------*/
/*---Modificado 1 por     :                              --*/
/*---Fecha Modificaci«n   :                              --*/ 
/*---Detalle Modificaci«n :                              --*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------*/
/*---Comentarios                                         --*/
/*---                                                    --*/
/*---                                                    --*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------*/
/*---Drop Proc SP_TDPRRE_GAST_Q01                        --*/
/*---Grant all on SP_TDPRRE_GAST_Q01 to public           --*/ 
/*---
			Create Table #TWTDPRRE_GAST_AUXI( 
			CO_EMPR		VARCHAR(02) ,	
			CO_UNID_CNTB		VARCHAR(03) ,
			NU_PRRE_GAST		VARCHAR(10) ,
			FE_PRRE_GAST		DATETIME,
			DE_ERRO_GAST		VARCHAR(50)  NULL,
			DE_CNTA_EMPR		VARCHAR(50)  NULL ) 
											           --*/ 

/*--- SP_TDPRRE_GAST_Q01 '01','001',2005, 5, '0000000007', '2005-05-21' --*/
											  
/*---------------------------------------------------------*/
@ISCO_EMPR			TD_VC_002, 
@ISCO_UNID_CNTB		TD_VC_003,  
@INNU_ANNO_PLAN		TD_IN_001,   --- AÏo Plan Contable
@INNV_INFO_CNTA		TD_IN_001,   --- Nivel de Informaci½n
@INNU_PRRE_GAST		TD_VC_010, 
@IDFE_PRRE_GAST		TD_DT_001
	As
declare 

@CNNU_CORR_GAST		TD_IN_001,
@CSCO_CNTA_EMPR		TD_VC_020,
@CSTI_AUXI_EMPR		TD_VC_001,
@CSCO_CENT_COST		TD_VC_020,
@CSCO_ORDE_SERV		TD_VC_020,
@CSTI_ENTI			TD_VC_001,
@CSCO_ENTI			TD_VC_020,
@CSDE_ENTI			TD_VC_100,
@CSCO_TIPO_DOCU		TD_VC_003,
@CSNU_DOCU_PROV		TD_VC_020,
@CNFA_CAMB_DOCU		TD_NU_015_006,
@CNFA_CAMB_EXTR		TD_NU_015_006,
@CSCO_MONE		TD_VC_003,
@CNIM_DOCU			TD_NU_016_004,
@CNFE_DOCU			TD_DT_001,
@CNFE_REGI_COMP		TD_DT_001,
@CNIM_CONV			TD_NU_016_004,
@CSCO_TIPO_OPER		TD_VC_003,
@CSDE_OBSE			TD_VC_100,
@CSCO_TIOP_PROV		TD_VC_003,
@CNIM_BRUT_AFEC		TD_NU_016_004,
@CNIM_BRUT_INAF		TD_NU_016_004,
@CSCO_IMP1			TD_VC_003,
@CNPC_IMP1			TD_NU_009_004,
@CNIM_IMP1			TD_NU_015_006,
@CSCO_IMP2			TD_VC_003,
@CNPC_IMP2			TD_NU_009_004,
@CNIM_IMP2			TD_NU_015_006,
@CSCO_IMP3			TD_VC_003,
@CNPC_IMP3			TD_NU_009_004,
@CNIM_IMP3			TD_NU_015_006,
@CSNU_IMPO			TD_VC_020,

@VSCO_TIAU_PROV		TD_VC_001,
@VSTI_OPRG_SIPR		TD_VC_003,
@VSCO_TIPO_OPER		TD_VC_003,
@VSCO_TIPO_OPEG		TD_VC_003,
@VSST_PROV_AUTO		TD_VC_001,

@VNNU_FETC_ST01		TD_IN_001, 		/* Status del 1er. cursor */

@VSCO_CNTA_EMPR		TD_VC_020,
@VSDE_CNTA_EMPR		TD_VC_050,
@VSCO_MONE			TD_VC_003,
@VSST_MONE			TD_VC_001,
@VSST_AUXI_EMPR		TD_VC_001,
@VSTI_AUXI_EMPR		TD_VC_001,
@VSST_DOCU_CNTB		TD_VC_001,
@VSTI_DOCU_CNTB		TD_VC_003,
@VSST_ORDE_SERV		TD_VC_001,
@VSTI_SITU			TD_VC_003

Begin Tran SP_TDPRRE_GAST_Q01

	Delete #TWTDPRRE_GAST_AUXI
	
	Select	@VSCO_TIAU_PROV		= CO_TIAU_PROV,
			@VSTI_OPRG_SIPR		= TI_OPRG_SIPR,
			@VSCO_TIPO_OPER		= CO_TIPO_OPER,
			@VSCO_TIPO_OPEG		= CO_TIPO_OPEG,
			@VSST_PROV_AUTO		= ST_PROV_AUTO
	From	TMPARA_TESO
	Where	CO_EMPR	= @ISCO_EMPR

	Declare CU_TDPRRE_GAST_Q01_1 Cursor
	For
	Select	NU_CORR_GAST,	CO_CNTA_EMPR,	TI_AUXI_EMPR,	CO_CENT_COST,	CO_ORDE_SERV,
			TI_ENTI,		CO_ENTI,		DE_ENTI,		CO_TIPO_DOCU,	NU_DOCU_PROV,
			FA_CAMB_DOCU,	FA_CAMB_EXTR,	CO_MONE,		IM_DOCU,		FE_DOCU,
			FE_REGI_COMP,	IM_CONV,		CO_TIPO_OPER,	DE_OBSE,		CO_TIOP_PROV,
			IM_BRUT_AFEC,	IM_BRUT_INAF,	CO_IMP1,		PC_IMP1,		IM_IMP1,
			CO_IMP2,		PC_IMP2,		IM_IMP2,		CO_IMP3,		
PC_IMP3,
			IM_IMP3,		NU_IMPO
	From 	TDPRRE_GAST
	Where	CO_EMPR = @ISCO_EMPR
	  And	CO_UNID_CONC = @ISCO_UNID_CNTB
	  And	NU_PRRE_GAST = @INNU_PRRE_GAST
	  And	FE_PRRE_GAST = @IDFE_PRRE_GAST
	
	
	Open  CU_TDPRRE_GAST_Q01_1
	Fetch CU_TDPRRE_GAST_Q01_1 Into
		@CNNU_CORR_GAST,	@CSCO_CNTA_EMPR,	@CSTI_AUXI_EMPR,	@CSCO_CENT_COST,	
@CSCO_ORDE_SERV,
		@CSTI_ENTI,			@CSCO_ENTI,			@CSDE_ENTI,			
@CSCO_TIPO_DOCU,	@CSNU_DOCU_PROV,
		@CNFA_CAMB_DOCU,		@CNFA_CAMB_EXTR,	@CSCO_MONE,		@CNIM_DOCU,			
@CNFE_DOCU,
		@CNFE_REGI_COMP,	@CNIM_CONV,			@CSCO_TIPO_OPER,	@CSDE_OBSE,			
@CSCO_TIOP_PROV,
		@CNIM_BRUT_AFEC,	@CNIM_BRUT_INAF,	@CSCO_IMP1,			@CNPC_IMP1,			
@CNIM_IMP1,
		@CSCO_IMP2,			@CNPC_IMP2,			@CNIM_IMP2,			@CSCO_IMP3,	
		@CNPC_IMP3,
		@CNIM_IMP3,			@CSNU_IMPO
	
	Select @VNNU_FETC_ST01 = @@FETCH_STATUS
	
	While (@VNNU_FETC_ST01 = 0)
	Begin
	
		If (@VNNU_FETC_ST01  < 0)
		Begin
			Close CU_TDPRRE_GAST_Q01_1
			Deallocate CU_TDPRRE_GAST_Q01_1
			Return
		End
	
		--  Valida Cuenta --
		If 	Len(Ltrim(Rtrim(IsNull(@CSCO_CNTA_EMPR,'')))) = 0
			Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, DE_CNTA_EMPR, 
DE_ERRO_GAST)
			Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, Null,
					'001.- DEBE INGRESAR CUENTA CONTABLE EN EL DETALLE ' + Convert(Varchar(5), 
@CNNU_CORR_GAST) ) 
	
		Else 
		Begin 	
			-- Se Obtiene Config. Gnrale de la cuenta contable --    
			Select	@VSCO_CNTA_EMPR	=	CO_CNTA_EMPR,
					@VSDE_CNTA_EMPR	=	DE_CNTA_EMPR,
					@VSCO_MONE 	=	CO_MONE,
					@VSST_MONE 	=	ST_MONE,
					@VSST_AUXI_EMPR	=	ST_AUXI_EMPR,
					@VSTI_AUXI_EMPR	=	TI_AUXI_EMPR,
					@VSST_DOCU_CNTB	=	ST_DOCU_CNTB,
					@VSTI_DOCU_CNTB	=	TI_DOCU_CNTB,
					@VSST_ORDE_SERV	=	ST_ORDE_SERV,
					@VSTI_SITU 	=	TI_SITU
			From	TMPLAN_EMPR    
			Where	CO_EMPR = @ISCO_EMPR And  
					NU_ANNO = @INNU_ANNO_PLAN And  
		            CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
		
					
			--  Validaci½n del Tipo de Auxiliar y C¸digo Auxiliar  --
			If @VSST_AUXI_EMPR = 'S'
			Begin
				If 	Len(Ltrim(Rtrim(IsNull(@CSTI_AUXI_EMPR,'')))) = 0 Or 
Len(Ltrim(Rtrim(IsNull(@CSCO_CENT_COST,'')))) = 0 
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'002.- CUENTA '+ @VSCO_CNTA_EMPR + ' LLEVA TIPO … C…DIGO AUXILIAR, 
DETALLE ' + Convert(Varchar(5), @CNNU_CORR_GAST) ) 
			End
			Else
			Begin
				If 	Len(Ltrim(Rtrim(IsNull(@CSTI_AUXI_EMPR,'')))) > 0 Or 
Len(Ltrim(Rtrim(IsNull(@CSCO_CENT_COST,'')))) > 0 
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'003.- CUENTA '+ @VSCO_CNTA_EMPR + ' NO LLEVA TIPO … C…DIGO 
AUXILIAR, DETALLE ' + Convert(Varchar(5), @CNNU_CORR_GAST) )
		
			End
		
			--  Validaci½n del Tipo y Nro de Documento --	
			If @VSST_DOCU_CNTB = 'S' 
			Begin
				If 	Len(Ltrim(Rtrim(IsNull(@CSCO_TIPO_DOCU,'')))) = 0 Or 
Len(Ltrim(Rtrim(IsNull(@CSNU_DOCU_PROV,'')))) = 0 
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'004.- CUENTA '+ @VSCO_CNTA_EMPR + ' LLEVA DOCUMENTO, DETALLE ' + 
Convert(Varchar(5), @CNNU_CORR_GAST) ) 
			End
			Else
			Begin
				If  @VSTI_OPRG_SIPR = @CSCO_TIPO_OPER And ( Len(Ltrim(Rtrim(IsNull(@CSCO_TIPO_DOCU,'')))) = 
0 Or Len(Ltrim(Rtrim(IsNull(@CSNU_DOCU_PROV,'')))) = 0 )
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'005.- CUENTA '+ @VSCO_CNTA_EMPR + ' LLEVA DOCUMENTO, DETALLE ' + 
Convert(Varchar(5), @CNNU_CORR_GAST) ) 
		
				/*else If 	Len(Ltrim(Rtrim(IsNull(@CSCO_TIPO_DOCU,'')))) > 0 Or 
Len(Ltrim(Rtrim(IsNull(@CSNU_DOCU_PROV,'')))) > 0 
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'006.- CUENTA '+ @VSCO_CNTA_EMPR + ' NO LLEVA DOCUMENTO, DETALLE 
' + Convert(Varchar(5), @CNNU_CORR_GAST) ) 

				Else
				If  @VSTI_OPRG_SIPR = @CSCO_TIPO_OPER 
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'xxx.- CUENTA '+ @VSCO_CNTA_EMPR + ' NO LLEVA DOCUMENTO, DETALLE 
' + Convert(Varchar(5), @CNNU_CORR_GAST) ) 
				*/
	
			End
			
			--  Validaci½n de la Orden de Servicio  --
			If @VSST_ORDE_SERV = 'S'
			Begin
				If 	Len(Ltrim(Rtrim(IsNull(@CSCO_ORDE_SERV,'')))) = 0
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'007.- CUENTA '+ @VSCO_CNTA_EMPR + ' LLEVA ORDEN DE SERVICIO, 
DETALLE ' + Convert(Varchar(5), @CNNU_CORR_GAST) ) 
			End
			Else
			Begin
				If 	Len(Ltrim(Rtrim(IsNull(@CSCO_ORDE_SERV,'')))) > 0
					Insert Into #TWTDPRRE_GAST_AUXI (CO_EMPR, CO_UNID_CNTB, NU_PRRE_GAST, FE_PRRE_GAST, 
DE_CNTA_EMPR, DE_ERRO_GAST)
					Values 	( @ISCO_EMPR, @ISCO_UNID_CNTB, @INNU_PRRE_GAST, @IDFE_PRRE_GAST, 
@VSDE_CNTA_EMPR,
							'008.- CUENTA '+ @VSCO_CNTA_EMPR + ' NO LLEVA ORDEN DE SERVICIO, 
DETALLE ' + Convert(Varchar(5), @CNNU_CORR_GAST) ) 
		
			End

		
		End -- Fin Valida Cuenta
	
	
		Fetch CU_TDPRRE_GAST_Q01_1 Into
		@CNNU_CORR_GAST,	@CSCO_CNTA_EMPR,	@CSTI_AUXI_EMPR,	@CSCO_CENT_COST,	
@CSCO_ORDE_SERV,
		@CSTI_ENTI,			@CSCO_ENTI,			@CSDE_ENTI,			
@CSCO_TIPO_DOCU,	@CSNU_DOCU_PROV,
		@CNFA_CAMB_DOCU,	@CNFA_CAMB_EXTR,	@CSCO_MONE,		@CNIM_DOCU,			
@CNFE_DOCU,
		@CNFE_REGI_COMP,	@CNIM_CONV,			@CSCO_TIPO_OPER,	@CSDE_OBSE,			
@CSCO_TIOP_PROV,
		@CNIM_BRUT_AFEC,	@CNIM_BRUT_INAF,	@CSCO_IMP1,			@CNPC_IMP1,			
@CNIM_IMP1,
		@CSCO_IMP2,			@CNPC_IMP2,			@CNIM_IMP2,			@CSCO_IMP3,	
		@CNPC_IMP3,
		@CNIM_IMP3,			@CSNU_IMPO
		
		Select @VNNU_FETC_ST01 = @@FETCH_STATUS
	
	End
	
	Close CU_TDPRRE_GAST_Q01_1
	Deallocate CU_TDPRRE_GAST_Q01_1


Commit Tran SP_TDPRRE_GAST_Q01

/*--------------------------- Fin -------------------------------- */


GO
